package net.oschina.git.fsppp.manager;

import net.oschina.git.fsppp.model.P3Dir;
import net.oschina.git.fsppp.model.SimpleResponse;

import java.io.IOException;
import java.util.List;

/**
 * 目录管理接口
 */
public interface IDirManager {
    /**
     * 建立目录
     * 成功后路径是 C:\java
     * @param path 路径 C:\
     * @param name 文件夹名称  java
     * @return SimpleResponse<P3Dir>
     */
    SimpleResponse<P3Dir> createDir(String path, String name);

    /**
     * 列出dir
     * @param dir
     * @return SimpleResponse<List<P3Dir>>
     */
    SimpleResponse<List<P3Dir>> listDir(P3Dir dir);

    /**
     * 删除
     * @param dir
     * @return SimpleResponse<P3Dir>
     */
    SimpleResponse<P3Dir> deleteNullDir(P3Dir dir);

    /**
     * 根据磁盘名称 id 获取文件（夹）
     * @param diskName
     * @param id
     * @return SimpleResponse<P3Dir>
     */
    SimpleResponse<P3Dir> getById(String diskName, Integer id);

    /**
     * 根据绝对路径path 获取文件（夹）
     * @param path
     * @return SimpleResponse<P3Dir>
     */
    SimpleResponse<P3Dir> getByPath(String path);

    /**
     * 根据绝对路径path 获取文件（夹）
     * @param path
     * @return SimpleResponse<List<P3Dir>>
     */
    SimpleResponse<List<P3Dir>> listByPath(String path);

    /**
     * 根据 绝对路径path 关键字 进行模糊匹配检索文件（夹）
     * @param path 当前目录
     * @param key  关键字
     * @return SimpleResponse<List<P3Dir>>
     */
    SimpleResponse<List<P3Dir>> search(String path, String key);

}
